package com.stone.mythread;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

// 1.创建一个实现 Callable 的实现类
public class ThreadCallable implements Callable<Integer> {

    // 2.实现 call 方法，将次现场需要执行的操作声明在 call() 中
    @Override
    public Integer call() throws Exception {
        int sum = 0;
        for (int i = 0; i <= 100; i++) {
            sum += i;
            System.err.println(i);
        }
        return sum;
    }

    public static void main(String[] args) throws Exception {
        // 3.创建 Callable 接口实现类的对象
        ThreadCallable t1 = new ThreadCallable();

        FutureTask future = new FutureTask(t1);

        // 启动线程
        new Thread(future).start();

        // get() 返回值即为 FutureTask 构造参数 Callable 实现类重写的 call() 的返回值。
        Object value = future.get();
        System.err.println("value : " + value);
    }
}
